1. Field
This invention relates to I/O device interface mechanisms, and more specifically to I/O device interface mechanisms that interface I/O devices to channel-based switched fabrics.
2. Background
A cluster may include one or more hosts connected together by an interconnection fabric. In traditional clusters, hosts have locally attached I/O controllers connected to local I/O buses. FIG. 1 illustrates a typical bus-based computer 10, which includes a processor 1 connected to a host (or processor) bus 2 and an I/O and memory controller (or chipset) 3. A local I/O bus 4 may be considered local to computer 10 because, among other factors, it is physically located within the same cabinet as the processor 1 (or within very close proximity to processor 1). Local I/O bus 4 is connected to an I/O bridge 5. Several I/O devices are attached to local I/O bus 4, including I/O controllers 6 and 7 and a Local Area Network (LAN) Network Interface Card (NIC) 8. The I/O controllers 6 and 7 may be connected to one or more I/O devices, such as storage devices, hard disk drives, or the like. I/O bus 4 is a traditional I/O bus, such as a Peripheral Component Interconnect (PCI bus), a Industry Standard Architecture (ISA) bus, or Extended ISA (EISA) bus, etc. A traditional I/O bus provides attachment points to which I/O controllers can be attached.
A bus-based computer, such as that shown in FIG. 1, has a number disadvantages and drawbacks. All of the I/O controllers on the I/O bus share the same power and clock domain and share a common address space. Due to the physical and electrical load limitations, only a relatively small number of I/O controllers may be attached to an I/O bus, and must be physically located within the same cabinet as the processor (or within very close proximity). Thus, the entire I/O bus is physically attached to a single computer system. Also, in traditional clusters, I/O controllers are not directly connected to the network or cluster, but are provided only as part of another host. Thus, the I/O controllers on the I/O bus of a computer system are directly visible (or detectable) and addressable only by that computer system or host, but are not directly visible or addressable to any other host in the cluster.
For example, I/O controllers 6 and 7 are visible only to computer 10, and are not visible or directly addressable to any other host which may be connected to LAN 11. To allow another host computer on LAN 11 (not shown) to access I/O controllers 6 and 7 of host 10, the other host on LAN 11 must communicate through processor 1 and the operating system of host computer 10 (rather than directly to I/O controllers 6 and 7).
Therefore, bus-based computer systems provide a very inflexible arrangement for I/O resources. As a result, there is a need for a technique that provides a much more flexible arrangement for I/O devices for computer systems.